package cn.core.sign.mapper;

import cn.core.sign.eo.Role;
import cn.core.sign.qo.RoleQO;
import cn.core.sign.vo.RoleMenuTreeInfoVO;
import cn.core.sign.vo.RoleVO;
import cn.core.tool.util.Paging;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;

/**
 * 角色 mybatis 持久化接口
 */
public interface RoleMapper {

  /**
   * 角色 >>> 新增
   */
  public void save(@Param("eo") Role eo) throws Exception;

  /**
   * 角色 >>> 批量新增
   */
  public void saveBatch(@Param("paging") Paging<?> paging, @Param("eos") Collection<Role> eos) throws Exception;

  /**
   * 角色 >>> 全字段更新
   */
  public void update(@Param("eo") Role eo) throws Exception;

  /**
   * 角色 >>> 批量全字段更新
   */
  public void updateBatch(@Param("paging") Paging<?> paging, @Param("eos") Collection<Role> eos) throws Exception;

  /**
   * 角色 >>> 部分字段更新
   */
  public void updateSome(@Param("eo") Role eo) throws Exception;

  /**
   * 角色 >>> 批量部分字段更新
   */
  public void updateSomeBatch(@Param("paging") Paging<?> paging, @Param("eos") Collection<Role> eos) throws Exception;

  /**
   * 角色 >>> 条件更新
   */
  public void updateQuery(@Param("eo") Role eo, @Param("qo") RoleQO qo) throws Exception;

  /**
   * 角色 >>> 删除
   */
  public void remove(@Param("eo") Role eo) throws Exception;

  /**
   * 角色 >>> 批量删除
   */
  public void removeBatch(@Param("eos") Collection<Role> eos) throws Exception;

  /**
   * 角色 >>> 条件删除
   */
  public void removeQuery(@Param("qo") RoleQO qo) throws Exception;

  /**
   * 角色 >>> 数据量
   */
  public Long count(@Param("qo") RoleQO qo) throws Exception;

  /**
   * 角色 >>> 主键查询
   */
  public Role pk(@Param("qo") RoleQO qo) throws Exception;

  /**
   * 角色 >>> 查询
   */
  public Collection<Role> query(@Param("qo") RoleQO qo) throws Exception;

  /**
   * 角色 >>> 分页
   */
  public Collection<Role> paging(@Param("paging") Paging<?> paging, @Param("qo") RoleQO qo) throws Exception;

  /**
   * 角色 >>> 业务数据量
   */
  public Long countVo(@Param("qo") RoleQO qo) throws Exception;

  /**
   * 角色 >>> 业务主键查询
   */
  public RoleVO pkVo(@Param("qo") RoleQO qo) throws Exception;

  /**
   * 角色 >>> 业务查询
   */
  public Collection<RoleVO> queryVo(@Param("qo") RoleQO qo) throws Exception;

  /**
   * 角色 >>> 业务分页
   */
  public Collection<RoleVO> pagingVo(@Param("paging") Paging<?> paging, @Param("qo") RoleQO qo) throws Exception;

  /**
   * 角色Id 登录端 >>> 授权列表
   */
  public Collection<String> getAuthListByRoleIdLoginSide(@Param("roleId") String roleId, @Param("loginSide") String loginSide) throws Exception;

  /**
   * 用户Id 登录端 >>> 角色菜单树信息
   */
  public Collection<RoleMenuTreeInfoVO> getRoleMenuTreeInfoByRoleIdLoginSide(@Param("roleId") String roleId, @Param("loginSide") String loginSide) throws Exception;

}
